#ifndef _QUEUE_H_
#define _QUEUE_H_

struct _Node
{
	struct _Node *prev;
	struct _Node *next;
	char data[0];
};

struct queue{
	struct _Node *head;
	int _node_data_size;
};

#ifdef __cplusplus
extern "C" {
#endif

extern struct queue* queue_create(int _node_sz);
extern int queue_is_empty(struct queue *queue);
extern int queue_push(struct queue *queue, void *data, int sz);
extern void queue_pop(struct queue *queue);
extern int queue_first(struct queue *queue, void* data, int sz);

/*
*	功能：销毁队列，并清空里面的所有节点
*/
extern void queue_destroy(struct queue *queue);

#ifdef __cplusplus
}
#endif

#endif // !_QUEUE_H_